package metodologia;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;

public class DadosMetodologia implements Serializable{
    private String nome;
    private String versao;
    private String autor;
    private ArrayList<Teste> listaDeTestes = new ArrayList<Teste>();
    private ArrayList<Aresta> listaDasArestasDosTestes;
    
    private ArrayList<Progress> progress; //Variável que armazena o progresso
    
    public DadosMetodologia(){
        nome = new String();
        versao = new String();
        autor = new String();
        listaDeTestes = new ArrayList<Teste>();
        listaDasArestasDosTestes = new ArrayList<Aresta>();
        progress = new ArrayList<Progress>();   
    }
    
    public DadosMetodologia(String nome, String versao, String autor){
        this.nome = nome;
        this.versao = versao;
        this.autor = autor;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getVersao() {
        return versao;
    }

    public void setVersao(String versao) {
        this.versao = versao;
    }

    public String getAutor() {
        return autor;
    }

    public void setAutor(String autor) {
        this.autor = autor;
    }

    public ArrayList<Teste> getListaDeTestes() {
        return listaDeTestes;
    }

    public void setListaDeTestes(ArrayList<Teste> listaDeTestes) {
        this.listaDeTestes = listaDeTestes;
    }
    
    public ArrayList<Aresta> getListaDasArestasDosTestes() {
        return listaDasArestasDosTestes;
    }

    public void setListaDasArestasDosTestes(ArrayList<Aresta> listaDasArestasDosTestes) {
        this.listaDasArestasDosTestes = listaDasArestasDosTestes;
    }
    
    /**
     * @return the progress
     */
    public ArrayList<Progress> getProgress() {
        return progress;
    }

    /**
     * @param progress the progress to set
     */
    public void setProgress(ArrayList<Progress> progress) {
        this.progress = progress;
    }
    
    @Override
    public String toString(){
        String retorno = "";
        
        // Imprime os dados da metodologia
        System.out.println("Nome da Metodologia: " + getNome() +
                "\nAutor: " + getAutor() +
                "\nVersão: " + getVersao() + "\n\n");
        
        // Imprime os dados dos testes
        for(Iterator i = listaDeTestes.iterator(); i.hasNext();){
            Teste t = (Teste)i.next();
            System.out.println("--Nome do teste: " + t.getTitulo() +
                    "\n--Descrição do teste: " + t.getDescricaoTeste() + 
                    "\n--ID: " + t.getId() + " CATID: " + t.getCatid() + " TYPE: " + t.getType() +
                    " X: " + t.getX() + " Y: " + t.getY() + "\n");
            
            // Imprime os dados dos conjuntos de Etapas
            for(Iterator j = t.getListaDoConjuntoDasEtapas().iterator(); j.hasNext();){
                ConjuntoDeEtapas c = (ConjuntoDeEtapas)j.next();
                if(c.getType() != 0 && c.getType() != 1){
                    System.out.println("----Conjunto das etapas: " + c.toString() + 
                            "\n----ID:" + c.getId() + " CATID" + c.getCatid() + " Type: " + c.getType()
                            + " X: " + c.getX() + " Y: " + c.getY() + "\n");
                }
                
                // Imprime as etapas:
                for(Iterator k = c.getListaDeEtapa().iterator(); k.hasNext();){
                    Etapa e = (Etapa)k.next();
                    System.out.println("------Título da etapa: " + e.getTitulo()
                            + "\n------Descrição: " + e.getDescricao() 
                            + "\n------Tem Planilha: " + e.isPlanilha()
                            + "\n------N Linhas: " + e.getnLinhas()
                            + "\n------N Colunas: " + e.getnColunas() +  "\n");
                    
                    int cont = 0;
                    // Imprimir os títulos
                    for(Iterator w = e.getTitulos().iterator(); w.hasNext();){
                        String ti = (String)w.next();
                        System.out.println("--------Coluna " + cont + " :" + ti + "\n");
                        cont++;
                    }
                }
                    
            }
        }
        
        return retorno;
    }
}
